<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <link rel="Stylesheet" type="text/css" href=
  "../../default.css" />
  <meta http-equiv="Content-Type" content=
  "text/html; charset=utf-8" />

  <title>Генераторы ключей</title>
  <style type="text/css">
  </style>
</head>

<body>
  <h1>Генераторы ключей</h1><strong>Зачем они нужны?</strong>

  <p>Помимо VMProtect, серийные номера могут генерироваться другими
  программами - генераторами. Это нужно для автоматизации выдачи
  номеров без участия человека. Покупатель покупает продукт,
  регистратор делает HTTP-запрос на сайт производителя, там
  запускается программа-генератор и на основе данных о покупателе
  формирует серийный номер. Номер отправляется покупателю и
  производителю. Производитель вносит его в базу VMProtect вручную,
  через окно импорта лицензий.</p><strong>Принцип работы</strong>

  <p>Система лицензирования VMProtect построена на асимметричных
  алгоритмах, поэтому для генерации серийных номеров требуется
  секретный ключ продукта. Этот ключ можно экспортировать в окне
  свойств продукта и передать программе-генератору подходящим для
  нее способом.</p>

  <p>Программа-генератор вызывается регистратором через
  HTTP-запрос. Генератор на PHP может быть вызван напрямую,
  генератор в виде DLL - косвенно, но алгоритм остается одним и тем
  же:</p>

  <ul>
    <li>Получить данные о пользователе от регистратора</li>

    <li>Добавить необходимую информацию, которую указал
    производитель</li>

    <li>Сформировать серийный номер</li>

    <li>Зашифровать его одним из алгоритмов</li>

    <li>Передать результат регистратору</li>
  </ul><strong>Существуют ли готовые генераторы?</strong>

  <p>С системой лицензирования поставляется три готовых генератора
  серийных номеров <a href="keygen_dll.htm">в виде DLL</a>,
  <a href="keygen_net.htm">для платформы .Net</a> и <a href=
  "keygen_php.htm">реализованный на PHP</a>.</p><strong>Можно ли
  сделать свой генератор?</strong>

  <p>Можно. Формат серийного номера находится <a href=
  "serial_format.htm">здесь</a>, алгоритмы шифрования серийного
  номера описаны <a href=
  "algorithms.htm">здесь</a>.</p><strong>Насколько это
  безопасно?</strong>

  <p>В общем случае - вполне безопасно. Однако есть несколько
  рекомендаций, которым стоит следовать:</p>

  <ul>
    <li><strong>Используйте протокол HTTPS</strong> - если ваш
    регистратор умеет делать запрос по HTTPS, а ваш хостинг
    позволяет отвечать на такие запросы, то этот вариант
    предпочтительнее обычного HTTP, т.к. поток данных будет
    зашифрован и сгенерированный серийный номер сможет получить
    только регистратор.</li>

    <li><strong>"Спрячьте" генератор</strong> - убедитесь, что
    генератор нельзя вызвать случайно. Адрес
    www.site.com/keygen.php - плохая идея. А вот
    www.site.com/abc123.php - уже лучше. Убедитесь, что на
    генератор нет внешних ссылок, что он не показывается при
    просмотре содержимого директории сайта и не помещайте его в
    служебные файлы типа robots.txt. Чем меньше известно о
    расположении генератора - тем лучше. Как вариант - можно
    вынести генератор на другой сайт.</li>

    <li><strong>Убедитесь, что вас вызывает регистратор</strong> -
    в программе, обрабатывающей запрос от регистратора, необходимо
    проверить IP-адрес вызывающей стороны. Обычно регистраторы
    публикуют список адресов, с которых они могут вызвать
    генератор. Найдите такой у вашего регистратора и добавьте
    проверку. В случае несовпадения адреса, лучше не выдавать
    понятных ошибок. Не возвращайте ничего или верните ошибку 404.
    Не давайте повода понять, почему вызов оказался неудачен.</li>

    <li><strong>Проверяйте входные параметры</strong> - в
    настройках продукта у регистратора обычно дается возможность
    указать строку запроса, который регистратор будет делать для
    получения лицензии. Скажем, вы хотите получать имя
    пользователя, адрес его электронной почты, дату продажи и номер
    заказа. Убедитесь при получении запроса, что все параметры
    переданы и что все они имеют корректный формат. Не отвечайте на
    запросы с ошибками. О любых ошибках уведомляйте себя отправкой
    e-mail со всеми параметрами, с которыми был вызван генератор.
    Это поможет разобраться в причинах проблемы.</li>

    <li><strong>Добавьте "пароль"</strong> - укажите в запросе,
    посылаемом регистратором, дополнительный параметр - пароль. С
    неочевидным именем и значением. Проверяйте его на принимающей
    стороне. В случае несовпадения или отсутствия - не генерируйте
    номер.</li>
  </ul><br />
  <br />
  <br />
  <br />
  <br />
  <hr noshade="noshade" size="1" />

  <div align="center">
    © 2006-2015 Copyright VMProtect Software
  </div>
</body>
</html>
